#pragma once
/*--------------------------------------------------------------------------------
 * Adaptive Intelligence - Foundation Framework Class Library
 * Version 2.00
 * 
 * Progress Event Arguments Class
 *      Provides an event arguments class for events used to update status during 
 * operations.
 *------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
 * System Imports
 *------------------------------------------------------------------------------*/
#include "stdafx.h"
using namespace System;

namespace Adaptive
{
	namespace Foundation
	{
		/// <summary>
		/// Provides an event arguments class for events used to update status during 
		/// operations.
		/// </summary>
		/// <remarks>
		/// This class may be used to update events, log files, or the UI when processing
		/// long-running operations.
		/// </remarks>
		public ref class ProgressEventArgs : public System::EventArgs 
		{
		public:
			/*--------------------------------------------------------------------------------
			 * Constructor / Dispose / Destructor Methods
			 *------------------------------------------------------------------------------*/
			#pragma region Constructor / Dispose / Destructor Methods
			/// <summary>
			/// Initializes a new instance of the class.
			/// </summary>
			ProgressEventArgs();
			/// <summary>
			/// Initializes a new instance of the class to the specified completion percentage.
			/// </summary>
			ProgressEventArgs(int percentDone);
			/// <summary>
			/// Initializes a new instance of the class to the specified status.
			/// </summary>
			ProgressEventArgs(String^ status);
			/// <summary>
			/// Initializes a new instance of the class to the specified status and completion percentage.
			/// </summary>
			ProgressEventArgs(String^ status, int percentDone);
			/// <summary>
			/// Class destructor.
			/// </summary>
			~ProgressEventArgs();
			#pragma endregion
			
			/*--------------------------------------------------------------------------------
			 * Public Properties
			 *------------------------------------------------------------------------------*/
			#pragma region Public Properties
			/// <summary>
			/// Gets or sets the current status to be displayed.
			/// </summary>
			/// <value>
			/// A status description.
			/// </value>
			property String^ Status { String^ get(); void set( String^ value ); }
			/// <summary>
			/// Gets or sets the percentage completion value.
			/// </summary>
			/// <value>
			/// An integer value between 0 and 100.
			/// </value>
			property int PercentComplete { int get(); void set( int value ); }
			#pragma endregion

		private:
			/*--------------------------------------------------------------------------------
			 * Private Member Declarations
			 *------------------------------------------------------------------------------*/
			#pragma region Private Member Declarations
			/// <summary>
			/// Current operational status text.
			/// </summary>
			String^		_status;
			/// <summary>
			/// Operational percentage completion value.
			/// </summary>
			int			_percentDone;
			#pragma endregion

		};
	}
}
